﻿///////////////////////////////////////////////////////////////////////////////
// File:        Main.cc
// Author:      671643387@qq.com
// Date:        2016年1月13日 上午10:38:06
// Description:
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <yxs/thread/Thread.h>

class Counter : public __YXS_THREAD_
{
public:
    Counter(void)
    {

    }

    virtual ~Counter(void)
    {

    }

    virtual void Stop(void)
    {
        stop_ = true;
    }

    virtual void Run(void)
    {
        while (!stop_)
        {
            Sleep(100);
            {
                __YXS_LOCK_(mutex_);
                if (counter_ > 100)
                {
                    Stop();
                    break;
                }
                ++counter_;
                std::cout << GetId() << ", " << counter_ << std::endl;
            }
        }
    }

private:
    static bool stop_;
    static int counter_;
    static __YXS_MUTEX_ mutex_;
};

bool Counter::stop_ = false;
int Counter::counter_ = 0;
__YXS_MUTEX_ Counter::mutex_;

int main(int argc, char *argv[])
{
    Counter a, b;
    a.Start();
    b.Start();
    a.Join();
    b.Join();
    return 0;
}